//
// Created by wujehy on 2020/8/3.
//

#ifndef AUTH_RAFT_LISTERNERMANAGER_H
#define AUTH_RAFT_LISTERNERMANAGER_H

#include <map>
#include "baseType.h"
#include "Listers/ListernerBase.h"
//#include "BusinessManager.h"
/**
 * @brief 监听器 管理模块
 */
class ListernerManager : public ManagerBase
{
    friend class ListernerBase;

private:
    std::map<int, ListernerBase *> m_Listerner_map;

    /**
     * @brief 注册所有的监听器
     */
    void registerListerners();

public:
    ListernerManager();

    /**
     * @brief 初始化
     */
    void init();

    Type type() override;

    /**
     * @brief 通过监听起类型触发 监听器
     * @param type 需要触发的监听器类型
     */
    void callEvent(int type);

    virtual ~ListernerManager();

    /**
     * @brief 初始化完成事件
     */
    void init_finished() override;

};


#endif //AUTH_RAFT_LISTERNERMANAGER_H
